home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / ovrobj.com / LOCKDEMO.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-12-05  |  2.5 KB  |  106 lines

  1. {$F+,O+}
  2. program LockDemo;
  3.  
  4. {  This program demonstrates the use of the OverLock unit.
  5.    To run the demo, compile to disk to create the EXE and
  6.    OVR files and then execute LOCKDEMO.  Redirecting the
  7.    output to a disk file is recommended since the output
  8.    will scroll off the top of the screen.  }
  9.  
  10. uses
  11.   Overlay, Demo1, Demo2, Demo3, Demo4, OverLock;
  12.  
  13. {$O Demo1}
  14. {$O Demo2}
  15. {$O Demo3}
  16. {$O Demo4}
  17.  
  18. var
  19.   I,OvrLockResult : Integer;
  20.   SaveReadBuf : OvrReadFunc;
  21.  
  22. function MyOvrRead (OvrSeg : Word) : Integer;
  23. { Display name of overlaid unit loaded }
  24. var
  25.   E : Integer;
  26. begin
  27.   E := SaveReadBuf (OvrSeg);
  28.   MyOvrRead := E;
  29.   if OvrSeg = Seg(Write1) then
  30.     Writeln ('Demo1 loaded')
  31.   else if OvrSeg = Seg(Write2) then
  32.     Writeln ('Demo2 loaded')
  33.   else if OvrSeg = Seg(Write3) then
  34.     Writeln ('Demo3 loaded')
  35.   else if OvrSeg = Seg(Write4) then
  36.     Writeln ('Demo4 loaded')
  37.   else
  38.     Writeln ('??? loaded');
  39. end;
  40.  
  41. procedure OvrLockCheck;
  42. { Call OvrLock and check result }
  43. begin
  44.   OvrLockResult := OvrLock;
  45.   if OvrLockResult <> 0 then begin
  46.     Writeln ('OvrLock failed: ', OvrLockResult);
  47.     Halt(1);
  48.   end;
  49. end;
  50.  
  51. procedure OvrUnlockCheck;
  52. { Call OvrUnlock and check result }
  53. begin
  54.   OvrLockResult := OvrUnlock;
  55.   if OvrLockResult <> 0 then begin
  56.     Writeln ('OvrUnlock failed: ', OvrLockResult);
  57.     Halt(1);
  58.   end;
  59. end;
  60.  
  61. begin
  62.   OvrInit('LOCKDEMO.OVR');       { Initialize overlay system }
  63.   if OvrResult <> 0 then
  64.   begin
  65.     Writeln('Overlay error: ', OvrResult);
  66.     Halt(1);
  67.   end;
  68.   OvrSetBuf(OvrGetBuf*3);        { Set buffer to appropriate size for testing }
  69.   SaveReadBuf := OvrReadBuf;     { Set up to monitor overlay manager actions }
  70.   OvrReadBuf := MyOvrRead;
  71.  
  72.   Write1;                        { Load Demo1 }
  73.   OvrLockCheck;                  { Lock it in }
  74.   Writeln ('-- Demo1 locked in --');
  75.  
  76.   for I := 1 to 2 do begin       { Exercise overlay manager }
  77.     Write1;
  78.     Write2;
  79.     Write3;
  80.     Write4;
  81.   end;
  82.  
  83.   OvrUnlockCheck;                { Remove lock }
  84.  
  85.   Write2;                        { Load Demo2 on top of Demo1 }
  86.   OvrLockCheck;                  { Lock 'em up }
  87.   Writeln ('-- Demo1 and Demo2 both locked in --');
  88.  
  89.   for I := 1 to 2 do begin       { Exercise overlay manager }
  90.     Write1;
  91.     Write2;
  92.     Write3;
  93.     Write4;
  94.   end;
  95.  
  96.   OvrUnlockCheck;                { Remove lock }
  97.   Writeln ('-- No locks --');
  98.  
  99.   for I := 1 to 2 do begin       { Freedom for all }
  100.     Write1;
  101.     Write2;
  102.     Write3;
  103.     Write4;
  104.   end;
  105. end.
  106.